package com.dp1.pucp.Compras.Controlador;

import CharliesCookies.MainController;
import com.dp1.pucp.Compras.DAO.OrdenCompraDAO;
import com.dp1.pucp.Compras.VIsta.BuscarPedidoCompraGUI;
import com.dp1.pucp.Compras.VIsta.MantenimientoOrdenCompraGUI2;
import com.dp1.pucp.Compras.VIsta.OrdenCompraGUI;
import com.dp1.pucp.Modelo.Clases.Ordencompra;
import com.dp1.pucp.Seguridad.DAO.LogDAO;
import com.dp1.pucp.Util.Validaciones;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;

/**
 *
 * @author ubuntu64
 */
public class MantOrdenCompraControlador {

    private OrdenCompraDAO m;
    private MantenimientoOrdenCompraGUI2 mantOrdenCompraView;
    private ArrayList<Ordencompra> lstOrden;
    private ArrayList<String> lstEstado;
    private int vista;
//    private final static int ESTADO_ACTIVO=1;
//    private final static int ESTADO_INACTIVO=2;

    public MantOrdenCompraControlador(OrdenCompraDAO dao, MantenimientoOrdenCompraGUI2 v, int vis) {
        m = dao;
        mantOrdenCompraView = v;
        vista = vis;

        llenarEstadoCombo();
        mantOrdenCompraView.diferenciarVistas(vista);
        mantOrdenCompraView.addBuscarListener(new listarOrdenes(this));
        mantOrdenCompraView.addIngresoMPListener(new ingresoMateriaListener(this)); //esto es como editar

        mantOrdenCompraView.addEditarListener(new editarOrdenListener(this));
        mantOrdenCompraView.addNuevoListener(new crearOrdenListener(this));
        mantOrdenCompraView.addLimpiarListener(new limpiarListener());
        mantOrdenCompraView.addELiminarListener(new eliminarListener());
//        buscarRRHHView.addActivarListener(new activarListener());

    }

    private void llenarEstadoCombo() {
        if (vista == 3) {
            lstEstado = m.listarEstadoAux(); //Este solo llena el combo con registrado y pendiente
        } else {
            lstEstado = m.listarEstado();
        }
        mantOrdenCompraView.llenaComboEstado(lstEstado);
    }

    class listarOrdenes implements ActionListener {

        public listarOrdenes(MantOrdenCompraControlador mantOrden) {
        }

        @Override
        public void actionPerformed(ActionEvent e) {
            lstOrden = m.listarOrden();
            if (vista == 2) {
//                mantOrdenCompraView.realizarFiltro2(lstOrden);
                lstOrden = mantOrdenCompraView.realizarFiltro2(lstOrden);
//                mantOrdenCompraView.llenaGrilla(lstOrden);
            } else {
//                  mantOrdenCompraView.realizarFiltro(lstOrden);
                lstOrden = mantOrdenCompraView.realizarFiltro(lstOrden);
//                mantOrdenCompraView.llenaGrilla(lstOrden);
            }

        }
    }

    class ingresoMateriaListener implements ActionListener {

        private ProveedorControlador buc;

        public ingresoMateriaListener(MantOrdenCompraControlador buscarusr) {
            //buc=buscarusr;
        }

        @Override
        public void actionPerformed(ActionEvent e) {
            int sel = mantOrdenCompraView.getFilaSel();
            if (sel != -1) {
                OrdenCompraGUI p = new OrdenCompraGUI(mantOrdenCompraView.getPadre(), true);
                Ordencompra u = lstOrden.get(sel);
                OrdenCompraControlador c = new OrdenCompraControlador(m, p, u, 3);
                p.setVisible(true);
            } else {
                Validaciones.mostrarMensajeErrorVal("Debe seleccionar una orden de compra");
            }
        }
    }

    class editarOrdenListener implements ActionListener {

        private ProveedorControlador buc;

        public editarOrdenListener(MantOrdenCompraControlador buscarusr) {
            //buc=buscarusr;
        }

        @Override
        public void actionPerformed(ActionEvent e) {
            int sel = mantOrdenCompraView.getFilaSel();
            if (sel != -1) {
                OrdenCompraGUI p = new OrdenCompraGUI(mantOrdenCompraView.getPadre(), true);
                Ordencompra u = lstOrden.get(sel);
                OrdenCompraControlador c = new OrdenCompraControlador(m, p, u, 1);
                p.setVisible(true);
            } else {
                Validaciones.mostrarMensajeErrorVal("Debe seleccionar una orden de compra");
            }
        }
    }

    class crearOrdenListener implements ActionListener {

//        private OperarioControlador buc;
        public crearOrdenListener(MantOrdenCompraControlador ordenDeCompra) {
            //buc=empleado;
        }

        @Override
        public void actionPerformed(ActionEvent e) {
            BuscarPedidoCompraGUI p = new BuscarPedidoCompraGUI(mantOrdenCompraView.getPadre(), true);
            BuscarPedidoCompraControlador c = new BuscarPedidoCompraControlador(m, p);
            p.setVisible(true);
        }
    }

    class eliminarListener implements ActionListener {

        @Override
        public void actionPerformed(ActionEvent e) {
            int sel = mantOrdenCompraView.getFilaSel();
            if (sel != -1) {
                if (Validaciones.solicitarConfirmacionVal("¿Desea eliminar esta orden de compra?") == 0) {
                    Ordencompra u = lstOrden.get(sel);
                    u.setEstado(0);
                    m.guardarOrdenCompra(u);
                    Validaciones.mostrarMensajeAvisoVal("Se eliminó la orden de compra con éxito");
//                    listarResultados(mantOrdenCompraView.getEstado());
                    LogDAO.insertarLog(MainController.usuario, "Eliminar Orden de Compra");
                }
            } else {
                Validaciones.mostrarMensajeErrorVal("Debe seleccionar una Orden de Compra");
            }
        }
    }

    class limpiarListener implements ActionListener {

        @Override
        public void actionPerformed(ActionEvent e) {
            mantOrdenCompraView.LimpiarDatos();
        }
    }
}
